home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / program / graphx11.zoo / docs / graphx11.txt < prev   
Text File  |  1992-08-06  |  76KB  |  1,733 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.                       Graphics Library v1.1
  7.                       =====================
  8.  
  9.  
  10.                                for
  11.  
  12.  
  13.                Lattice C v5.06, Sozobon C v2.0 and
  14.                   Heat & Serve Sozobon C v1.33i
  15.  
  16.  
  17.                           ** FREEWARE **
  18.  
  19.  
  20.                        Copyright (c) 1992
  21.  
  22.  
  23.                                by
  24.  
  25.                        Kenneth W. Hartlen
  26.  
  27.             Box 37, Site 6, RR#3, Armdale, Nova Scotia
  28.                         B3L 4J3   Canada
  29.  
  30.  
  31.           Internet address: hartlenk@newton.ccs.tuns.ca
  32.  
  33.  
  34.  
  35.  
  36.  
  37.                           August 6, 1992
  38.  
  39.  
  40.  
  41.  
  42.  
  43. Turbo  C v2.0 is a registered trademark of Borland  International, 
  44. Inc. Copyright (c) 1988.
  45.  
  46. Lattice  C v5.06 is a trademark or registered trademark of  HiSoft 
  47. and Lattice, Inc. Copyright (c) 1990-91.
  48.  
  49. Sozobon C version made possible with the use of:
  50.  
  51.      Ian Lepore's .......GEMFAST VDI & AES Library
  52.  
  53.      David W. Brooks' ...Floating Point Library for Sozobon C
  54.  
  55. __________________________________________________________________
  56.  
  57.                              Purpose
  58. __________________________________________________________________
  59.  
  60.      Do  you have any Turbo C code that you'd like to run on  your 
  61. ST/STe/TT,  but it uses the graphics library? Would you like to be 
  62. able to display graphics without exploring GEM's VDI functions? If 
  63. you said "Yes!!!" to either of these questions,  then my  graphics 
  64. library is for you.
  65.  
  66.      This  is a graphics library for Lattice C  v5.06,  Sozobon  C 
  67. v2.0  and  Ian  Lepore's Heat & Serve  Sozobon  C  compilers  that 
  68. provides  graphic functions without having to delve into  the  VDI 
  69. functions of GEM. Rather than come up with my own graphic function 
  70. names,  I used the same names as in Turbo C v2.0 and provided  the 
  71. same  functionality.  This  way  the  C code  you  write  on  your 
  72. ST/STe/TT can be easily ported to the PC and compiled with Turbo C 
  73. with  little or no modification.  And of course,  porting Turbo  C 
  74. code to your ST/STe/TT will be much easier.
  75.  
  76.      Although  the library is not 100% compatible with  Turbo  C's 
  77. library,  it still provides a valuable starting point in the  task 
  78. of  porting graphic intensive Turbo C code between  the  ST/STe/TT 
  79. and PC. Of the 93 graphics functions in Turbo C v2.0, not all have 
  80. been implemented.  Functions not implemented are still  documented 
  81. and have an brief explanation of why it is not provided.
  82.  
  83.      If the library doesn't provide all the functionality  desired 
  84. it  is because I didn't think it was a widely used function or  it 
  85. was  not  applicable  to the ST or I  didn't  have  the  technical 
  86. information  to implement it.  Feel free to send any  comments  or 
  87. suggestions you have for improving the library. My mailing address 
  88. and  e-mail address are on the title page.  I'm not sure how  long 
  89. I'll have the Internet address, but it won't hurt to try Internet.
  90.  
  91. __________________________________________________________________
  92.  
  93.                          FREEWARE Notice
  94. __________________________________________________________________
  95.  
  96.      I had originally started building the graphics library for my 
  97. own  use  since I had a lot of Turbo C code around that  would  be 
  98. useful on my MEGA ST2.  So I created this library to help port the 
  99. source code to my MEGA ST2. I found the graphics library so useful 
  100. that  I thought others would be interested and decided  to  refine 
  101. the library and include some detailed documentation.
  102.  
  103.      Graphics Library v1.1 is provide as FREEWARE!! You should not 
  104. have  paid  money,  with the exception of  media  cost,  for  this 
  105. graphics library.
  106.  
  107.      Graphics  Library  v1.1 can be distributed and used  free  of 
  108. charge and may NOT be sold,  or used in,  or distributed  with,  a 
  109. commercial product without prior written consent from me.
  110.  
  111. __________________________________________________________________
  112.  
  113.                             Disclaimer
  114. __________________________________________________________________
  115.  
  116.      Although I've tested the library on my existing Turbo C  code 
  117. and written numerous testcases that exercised all the functions, I 
  118. can't guarantee that this graphics library is bug free. Therefore:
  119.  
  120.      Graphics  Library  v1.1  is  provided  AS  IS.   I  make   no 
  121. warranties,  either  expressed  or implied,  with respect  to  the 
  122. software,  documentation,  its  level of  compatibility,  quality, 
  123. performance,  or  fitness.  I  will  not  be  liable  for  direct, 
  124. indirect,  or consequential damages resulting from any defects  in 
  125. or misuse of the software.
  126.  
  127.      Having  said that,  I hope you find Graphics Library v1.1  as 
  128. useful as I do.
  129.  
  130. __________________________________________________________________
  131.  
  132.                              Manifest
  133. __________________________________________________________________
  134.  
  135.      The  archive  file  graphx11.zoo contains  several  files  in 
  136. directories as follows:
  137.  
  138. bgidemo\  
  139.           bgidemo.prg    Turbo C's BGI demo program compiled  with 
  140.                          Lattice C v5.0 and Graphics Library v1.1. 
  141.                          It can be run in all resolutions.
  142.  
  143. demos\
  144.           lines.c        a small demo program that produces a  Qix 
  145.                          like object on the screen.  This file can 
  146.                          be compiled by Lattice, Sozobon and Turbo 
  147.                          C.
  148.  
  149.           sort.c         a small demo program that sorts a list of 
  150.                          random  number  using  shell,  insertion, 
  151.                          selection  and quick  sort  methods.  The 
  152.                          process of sorting is shown  graphically. 
  153.                          This  file  can be compiled  by  Lattice, 
  154.                          Sozobon and Turbo C.
  155.  
  156. docs\
  157.           graphx11.doc   a 1ST Word Plus document file  containing 
  158.                          the graphics library manual.
  159.  
  160.           graphx11.txt   a pure ASCII version of the  above.  This 
  161.                          is provided so the manual can be  printed 
  162.                          with your favourite hardcopy utility.
  163.  
  164. lc_lib\
  165.           graphics.lib   the Lattice C object module library file, 
  166.                          built with Lattice's oml.ttp,  that  must 
  167.                          be linked with your object files.
  168.  
  169.           graphics.hdr   a compressed graphics header file used by 
  170.                          Lattice  C  and created  using  Lattice's 
  171.                          lcompact.ttp   utility   provided    with 
  172.                          Lattice C.
  173.  
  174.           graphics.hlc   the graphics library header file used  by 
  175.                          Lattice C in pure ASCII.
  176.  
  177. soz_lib\  
  178.           graphics.a     the  Heat  & Serve Sozobon C  v1.33i  and 
  179.                          Sozobon  C  v2.0  object  module  library 
  180.                          file,  built  with ar.ttp,  that must  be 
  181.                          linked with your object files.
  182.  
  183.           graphics.hsz   the graphics library header file used  by 
  184.                          Sozobon C and Heat & Serve Sozobon C.
  185.  
  186. extras\
  187.           gemfst17.lzh   Sozobon C v2.0 users will have to install 
  188.                          Ian Lepore's GEMFAST VDI & AES  libraries 
  189.                          before  my graphics library can be  used. 
  190.                          If  using Heat & Serve Sozobon  C  v1.33i 
  191.                          you already have this library.
  192.  
  193.           fplib10b.arc   Sozobon C v2.0 users will have to install 
  194.                          David  W.  Brooks'  replacement  floating 
  195.                          point library before my graphics  library 
  196.                          can  be  used.  If  using  Heat  &  Serve 
  197.                          Sozobon  C  v1.33i you  don't  need  this 
  198.                          libray.
  199.  
  200.  
  201.       If any of these files are missing, the original graphx11.zoo 
  202. file has been tampered with. Please locate a complete graphx11.zoo 
  203. file.  If you give a copy to someone else,  please distribute  the 
  204. complete archive and not bits and pieces. Thanks.
  205.  
  206. __________________________________________________________________
  207.  
  208.                            Installation
  209. __________________________________________________________________
  210.  
  211.      The  installation  procedure is really  quite  simple.  There 
  212. are two  ways that the graphics library can be utilized by your  C 
  213. compiler.  You can place the files in the appropriate  directories 
  214. used  by  C  your compiler or simply copy  them  to  your  working 
  215. directory where  your C source code resides.  Personally, I prefer 
  216. the files to be in the compiler's directories so you don't have to 
  217. copy the files all over the place before using it.
  218.  
  219.  
  220.      Installation for Lattice C v5.06
  221.  
  222.      From lc_lib\ of graphx11.zoo
  223.      1)   copy graphics.lib   to   \lc\lib\graphics.lib
  224.      2)   copy graphics.hlc   to   \lc\headers\graphics.h
  225.      3)   copy graphics.hdr   to   \lc\h\graphics.h
  226.  
  227.  
  228.      Installation for Sozobon C v2.0
  229.  
  230.      From soz_lib\ of graphx11.zoo
  231.      1)   copy graphics.a     to   \sozo_20\lib\graphics.a
  232.      2)   copy graphics.hsz   to   \sozo_20\include\graphics.h
  233.      3)   Install the GEMFAST libraries as outlined in the GEMFAST 
  234.           documentation.
  235.      4)   Install  the  replacement floating  point  libraries  as 
  236.           outlined in the documentation.
  237.  
  238.  
  239.      Installation for Heat & Serve Sozobon C v1.33i
  240.  
  241.      From soz_lib\ of graphx11.zoo
  242.      1)   copy graphics.a     to   \sozo_133i\lib\graphics.a
  243.      2)   copy graphics.hsz   to   \sozo_133i\include\graphics.h
  244.  
  245.      Please ensure that the correct object file is copied into the 
  246. \lib   directory  because  they  are  not   interchangeable.   The 
  247. graphics.lib  file is a Lattice C specific object  module  library 
  248. file  and the graphics.a file is a DRI object module library  file 
  249. used by Sozobon C.
  250.  
  251. __________________________________________________________________
  252.  
  253.                     Using the Graphics Library
  254. __________________________________________________________________
  255.  
  256.      To  use the graphics library,  all one must do is  place  the 
  257. appropriate  #include  statement in your C code source  code  that 
  258. will  use graphic functions.  If you have installed  the  graphics 
  259. library  in  the C compiler's directories then simply  insert  the 
  260. #include <graphics.h> statement in  your source file.
  261.  
  262.      If however,  you decided not to install the graphics  library 
  263. in  the  compiler's directories,  then use  #include  "graphics.h" 
  264. (note the double quotes).  This causes the preprocessor to look in 
  265. the  current  directory for the header file.  If  not  found,  the 
  266. compiler's directory (\lc\h or \sozobon\include) is searched.
  267.  
  268.      Sozobon C users please note:  Due to a problem I  encountered 
  269. when creating the library for Sozobon C, you will also have to add 
  270. a #define to your source file. #define __MAIN_SRC__ must be placed 
  271. in the source file,  before #include <graphics.h>,  that  contains 
  272. the main() function.  This is necessary so that the four functions 
  273. in  the header file are compiled with your source code.  For  some 
  274. strange  reason these functions cause a system crash  included  in 
  275. graphics.a. I tried several ways to overcome this problem and this 
  276. is the solution I came up with. It seems a bit messy, but it works 
  277. fine. I'll try to find a solution to this problem.
  278.  
  279.      Lattice  C  users please note:  The graphics.h  file  defines 
  280. enumerated  types  that  contain  duplicate  values.   Lattice   C 
  281. generates  warning  #79 when duplicate values are  encountered  in 
  282. enumerated types.  To eliminate these messages simply include  the 
  283. argument -j79i when using lc.ttp, as shown below, or add it to the 
  284. LC_OPT environment variable.
  285.  
  286.      Once  your source code has been compiled into  object  files, 
  287. the  graphics  library must be linked with your  object  files  as 
  288. follows:
  289.  
  290.      Compiling and linking with Lattice C
  291.  
  292.      1)   lc.ttp -fm -j79i myprog.c
  293.      2)   clink c.o+myprog.o
  294.                LIB graphics.lib+lcm.lib+lcg.lib+lc.lib
  295.                TO myprog.prg
  296.      3)   run myprog.prg
  297.  
  298.  
  299.      Compiling and linking with Sozobon C v2.0
  300.  
  301.      1)   cc -o myprog.prg -r myprog.c graphics.a vdifast.a
  302.                aesfast.a
  303.      2)   run myprog.prg
  304.  
  305.  
  306.      Compiling and linking with Heat & Server Sozobon C v1.33i
  307.  
  308.      1)   cc -o myprog.prg myprog.c graphics.a libm.a vdifast.a
  309.                aesfast.a
  310.      2)   run myprog.prg
  311.  
  312.  
  313.      If  you decide to freely distribute a program of  yours  that 
  314. was  created  with the help of this library how  about  mentioning 
  315. Kenneth W. Hartlen, Ian Lepore and David W. Brooks in the credits. 
  316. We aren't receiving any money for our efforts so it would be  nice 
  317. to at least see our names in lights! Thanks.
  318.  
  319.     ** WARNING!!  **   If programs are aborted before closegraph() 
  320. is  called unpredicable results will occur when you tried  to  run 
  321. another program. Make sure that a closegraph() is performed before 
  322. the program ends otherwise you should re-boot your system.
  323.  
  324. __________________________________________________________________
  325.  
  326.                        Future Enhancements
  327. __________________________________________________________________
  328.  
  329.      At  the  moment this graphics library suits  my  needs  quite 
  330. well.  I was able to compile and run all my Turbo C v2.0  graphics 
  331. code,  written while in university,  on my MEGA ST2! The only real 
  332. deviation   from  Turbo  C  is  the  font  capability   with   the 
  333. installuserfont  function.   This  graphics  library  simply  uses 
  334. variations  of  the  system font using  settextstyle  rather  than 
  335. loading different type faces. I had considered allowing the use of 
  336. GDOS,  but I'm unsure if it is really necessary and it would limit 
  337. the use of the library.
  338.  
  339.      If you'd like to see something added,  or changed, to enhance 
  340. compatiblity with Turbo C's graphics library just let me know.
  341.  
  342. __________________________________________________________________
  343.  
  344.                          What's Changed?
  345. __________________________________________________________________
  346.  
  347. July      16/92
  348. Version 1.0:   Unleashed Graphics Library on the masses.
  349.  
  350. August     6/92
  351. Version 1.1:   #defines  were  added to  graphics.hsz  to  prevent 
  352.                'double  define' during linking.  This problem  was 
  353.                encountered  when M.A.  Rahin attempted to use  the 
  354.                library with Heat & Serve Sozobon C  v1.33i.  Turbo 
  355.                C's graphic functions have very long names and when 
  356.                truncated  to  8 characters caused  some  duplicate 
  357.                function  names.  For example,  settextjustify  and 
  358.                settextstyle truncated to _settext.  Some  internal 
  359.                variables  were also renamed to avoid  the  'double 
  360.                define'.
  361.  
  362. __________________________________________________________________
  363.  
  364.                       The Graphic Functions
  365. __________________________________________________________________
  366.  
  367.      As  mentioned earlier,  the graphics library is Turbo C  v2.0 
  368. compatible,  but  not  100% compatible and some  minor  variations 
  369. exist.
  370.  
  371.      Aside:  For those familiar with Turbo C,  I had the BGIDEMO.C 
  372. file  compiled  and running with Lattice C in less than  an  hour! 
  373. Only  minor  modifications using #ifdefs were needed  to  the  45K 
  374. source file so it could be compiled in Lattice or Turbo C!
  375.  
  376.      What  follows  is  a complete  description  of  each  graphic 
  377. function available in the library.  Functions not implemented will 
  378. still  have  a  brief  description and a reason  why  it  was  not 
  379. implemented. If you don't agree with my reasoning, let me know why 
  380. and  I'll  see  what I can do about implementing it  in  a  future 
  381. release.
  382.  
  383. __________________________________________________________________
  384.  
  385. arc            Draws a circular arc
  386. __________________________________________________________________
  387. Syntax         void far arc(int x,int y,int stangle,int endangle,
  388.                             int radius);
  389.  
  390. Purpose        arc  draws an arc at (x,y) with the  given  radius. 
  391.                The  arc  is drawn from  stangle  to  endangle.  If 
  392.                stangle equals endangle a complete circle is drawn.
  393.  
  394.                stangle and endangle are angles measured in degrees 
  395.                going counterclockwise,  with 0 degrees being at  3 
  396.                o'clock,  90 degrees at 12 o'clock,  and so on. The 
  397.                arc is drawn in the current colour,  line style and 
  398.                thickness.
  399.  
  400. __________________________________________________________________
  401.  
  402. bar            Draws a two-dimensional bar
  403. __________________________________________________________________
  404. Syntax         void far bar(int left, int top, int right,
  405.                             int bottom);
  406.  
  407. Purpose        bar draws a filled-in rectangular,  two-dimensional 
  408.                bar  using the current fill style and fill  colour. 
  409.                The  bar is not outlined,  an outlined bar  can  be 
  410.                drawn  using  the bar3D functions with a  depth  of 
  411.                zero.
  412.  
  413.                The upper left corner is defined by (left,top)  and 
  414.                the lower right corner by (right,bottom).
  415.  
  416. __________________________________________________________________
  417.  
  418. bar3d          Draws a 3-D bar
  419. __________________________________________________________________
  420. Syntax         void far bar3d(int left, int top, int right,
  421.                               int bottom, int depth, int topflag);
  422.  
  423. Purpose        bar3d  draws  a three-dimensional  rectangular  bar 
  424.                using the current fill style and fill colour,  then 
  425.                outlines it with the current colour, line style and 
  426.                thickness.  The 3D effect is governed by depth  and 
  427.                if the topflag is nonzero, the 3D bar with be drawn 
  428.                with a top.
  429.  
  430.                The upper left corner is defined by (left,top)  and 
  431.                the lower right corner by (right,bottom).
  432.  
  433. __________________________________________________________________
  434.  
  435. circle         Draws a circle
  436. __________________________________________________________________
  437. Syntax         void circle(int x, int y, int radius);
  438.  
  439. Purpose        circle  draws  a circle using the  current  colour, 
  440.                line  style  and thickness at (x,y) with  a  radius 
  441.                given  by radius.  The circle drawn will be a  true 
  442.                circle in any resolution,  unlike the PC where  the 
  443.                aspect ratio has to be adjusted appropriately.
  444.  
  445. __________________________________________________________________
  446.  
  447. cleardevice    Clears the graphics screen
  448. __________________________________________________________________
  449. Syntax         void far cleardevice(void);
  450.  
  451. Purpose        cleardevice  erases the entire graphics screen  and 
  452.                sets the current position (CP) to (0,0).
  453.  
  454. __________________________________________________________________
  455.  
  456. clearviewport  Clears the current viewport
  457. __________________________________________________________________
  458. Syntax         void far clearviewport(void);
  459.  
  460. Purpose        clearviewport erases the viewport and sets  current 
  461.                position (CP) to (0,0) relative to the viewport.
  462.  
  463. __________________________________________________________________
  464.  
  465. closegraph     Shuts down the graphics system
  466. __________________________________________________________________
  467. Syntax         void far closegraph(void);
  468.  
  469. Purpose        closegraph  restores the original  colour  palette, 
  470.                and clears the screen.
  471.  
  472. __________________________________________________________________
  473.  
  474. detectgraph    Determines  graphics  driver  and mode  to  use  by 
  475.                checking the hardware
  476. __________________________________________________________________
  477. Syntax         void far detectgraph(int far *graphdriver,
  478.                                     int far *graphmode);
  479.  
  480. Purpose        detectgraph returns the monitor type in graphdriver 
  481.                and the graphics mode in graphmode which  indicates 
  482.                the  highest resolution possible.  If  no  graphics 
  483.                hardware  is  detected,   *graphdriver  is  set  to 
  484.                grNotDetected    and   graphresult   will    return 
  485.                grNotDetected.
  486.  
  487.                *graphdriver  is  an  integer  that  indicates  the 
  488.                driver to be used. You can use constants defined by 
  489.                the  graphics_driver  enumeration  type  as   shown 
  490.                below.                
  491.  
  492.                graphics_driver
  493.                constant                 Numeric value
  494.                --------------------------------------
  495.                DETECT                    0 (autodetection)
  496.                ...                      .. (CGA, EGA, VGA, etc)
  497.                SC1224                   11
  498.                SM124                    12
  499.                TTC1432                  13
  500.                TTM194                   14
  501.                UNKNOWN_DRIVER           15
  502.  
  503.                *graphmode is an integer that indicates the  screen 
  504.                mode to be used.  You can use constants defined  by 
  505.                the graphics_mode enumeration type as shown  below. 
  506.                               
  507.  
  508.                graphics_mode
  509.                constant                 Numeric value
  510.                --------------------------------------
  511.                CGAC0                      0
  512.                ...                      .. (CGA, EGA, VGA, etc)
  513.                SC1224LO                   0
  514.                SC1224MED                  1
  515.                SM124HI                    0
  516.                TTC1434LO                  0
  517.                TTC1434MED                 1
  518.                TTM194HI                   1
  519.                UNKNOWN_MODE               0
  520.  
  521. __________________________________________________________________
  522.  
  523. drawpoly       Draws the outline of a polygon
  524. __________________________________________________________________
  525. Syntax         void far drawpoly(int numpoints,
  526.                                  int far *polypoints);
  527.  
  528. Purpose        drawpoly  draws a polygon having  numpoints  points 
  529.                using the current colour, line style and thickness.
  530.  
  531.                polypoints   series  of  numpoints  x  2   integers 
  532.                defining the vertices for the polygon. Each pair of 
  533.                integers  represents  an  (x,y)  coordinate  of   a 
  534.                vertex. In order to draw an enclosed polygon having 
  535.                n  vertices  you must use pass n +  1  coordinates, 
  536.                where the nth coordinate equals the 0th.
  537.  
  538.                graphresult  will  return grNoScanMem if  an  error 
  539.                occurs drawing the polygon.
  540.  
  541. __________________________________________________________________
  542.  
  543. ellipse        Draws an elliptical arc
  544. __________________________________________________________________
  545. Syntax         void far ellipse(int x, int y,
  546.                                 int stangle, int endangle,
  547.                                 int xradius, int yradius);
  548.  
  549. Purpose        ellipse  draws an elliptical arc centered at  (x,y) 
  550.                with  a  horizontal  and vertical  radii  given  by 
  551.                xradius and yradius using the current colour,  line 
  552.                style  and  thickness.  The ellipse is  drawn  from 
  553.                stangle to endangle.  If stangle equals endangle  a 
  554.                complete ellipse is drawn.
  555.  
  556.                stangle and endangle are angles measured in degrees 
  557.                going counterclockwise,  with 0 degrees being at  3 
  558.                o'clock, 90 degrees at 12 o'clock, and so on.
  559.  
  560. __________________________________________________________________
  561.  
  562. fillellipse    Draws and fills an ellipse
  563. __________________________________________________________________
  564. Syntax         void far fillellipse(int x, int y,
  565.                                     int xradius, int yradius);
  566.  
  567. Purpose        fillellipse draws an ellipse centered at (x,y) with 
  568.                a  horizontal and vertical radii given  by  xradius 
  569.                and yradius. The ellipse is filled with the current 
  570.                fill  style  and colour,  then  outlined  with  the 
  571.                current colour, line style and thickness.
  572.  
  573. __________________________________________________________________
  574.  
  575. fillpoly       Draw and fill a polygon
  576. __________________________________________________________________
  577. Syntax         void far fillpoly(int numpoints,
  578.                                  int far *polypoints);
  579.  
  580. Purpose        fillpoly  draws a polygon having numpoints  points, 
  581.                fills it with the current fill style and colour and 
  582.                outlines  it using the current colour,  line  style 
  583.                and thickness.
  584.  
  585.                polypoints  is  series of numpoints  x  2  integers 
  586.                defining the vertices for the polygon. Each pair of 
  587.                integers  represents  an  (x,y)  coordinate  of   a 
  588.                vertex. Unlike drawpoly, only n vertices are needed 
  589.                and  fillpoly takes care of creating an  additional 
  590.                vertex to close the polygon.
  591.  
  592.                graphresult  will  return grNoScanMem if  an  error 
  593.                occurs drawing the polygon.
  594.  
  595. __________________________________________________________________
  596.  
  597. floodfill      Flood-fills a bounded region
  598. __________________________________________________________________
  599. Syntax         void far floodfill(int x, int y, int border);
  600.  
  601. Purpose        floodfill  fills  a bounded region  on  the  screen 
  602.                starting from (x,y).  The bounded region is defined 
  603.                by  the colour specified by border.  The region  is 
  604.                filled with the current fill style and colour.
  605.  
  606. __________________________________________________________________
  607.  
  608. getarccoords   Gets coordinates of the last call to arc
  609. __________________________________________________________________
  610. Syntax         void far getarccoords(struct arccoordstype
  611.                                      far *arccoords);
  612.  
  613. Purpose        getarccoords  fills in the arccoordstype  structure 
  614.                pointed to by arccoords with the information  about 
  615.                the last call to arc.  arccoordstype is defined  in 
  616.                graphics.h and has the following structure:
  617.  
  618.                     struct arccoordstype {
  619.                          int x, y;
  620.                          int xstart, ystart, xend, yend;
  621.                     };
  622.  
  623.                This  information  is especially useful if  want  a 
  624.                line  to meet at the end of the arc or  to  connect 
  625.                the endpoints of the arc with a straight line.
  626.  
  627. __________________________________________________________________
  628.  
  629. getaspectratio Retrieves the current graphic mode's aspect ratio
  630. __________________________________________________________________
  631. Syntax         void far getaspectratio(int far *xasp,
  632.                                        int far *yasp);
  633.  
  634. Purpose        getaspectratio  places the width of a screen  pixel 
  635.                in  xasp and the height of a screen pixel in  yasp. 
  636.                Using  these values you can calculate the  screen's 
  637.                aspect  ratio by xasp/yasp.  The aspect  ratio  can 
  638.                then   be  used  to  draw  true  squares   in   any 
  639.                resolution.
  640.  
  641.                graphics_mode       xasp      yasp
  642.                ----------------------------------
  643.                SC1224LO            338       372
  644.                SC1224MED           169       372
  645.                SM124HI             372       372
  646.                TTC1434LO           ???       ???
  647.                TTC1434MED          ???       ???
  648.                TTM194HI            ???       ???
  649.  
  650. __________________________________________________________________
  651.  
  652. getbkcolor     Returns the current background colour
  653. __________________________________________________________________
  654. Syntax         int far getbkcolor(void);
  655.  
  656. Purpose        getbkcolor returns the current background colour of 
  657.                the screen. (See setbkcolor for more information.)
  658.  
  659. __________________________________________________________________
  660.  
  661. getcolor       Returns the current drawing colour
  662. __________________________________________________________________
  663. Syntax         int far getcolor(void);
  664.  
  665. Purpose        getcolor return the current line drawing colour.
  666.  
  667. __________________________________________________________________
  668.  
  669. getdefaultpalette
  670.                Returns the palette definition structure
  671. __________________________________________________________________
  672. Syntax         struct palettetype *far getdefaultpalette(void);
  673.  
  674. Purpose        getdefaultpalette returns a pointer to  palettetype 
  675.                structure that contains the default colours.
  676.  
  677. __________________________________________________________________
  678.  
  679. getdrivername  Returns  a pointer to a string containing the  name 
  680.                of the current graphics driver
  681. __________________________________________________________________
  682. Syntax         char *far getdrivername(void);
  683.  
  684. Purpose        getdrivername  returns a pointer to a  string  that 
  685.                contains  the  name of the  graphics  driver  being 
  686.                used.
  687.  
  688. __________________________________________________________________
  689.  
  690. getfillpattern Copies a user-defined fill pattern into memory
  691. __________________________________________________________________
  692. Syntax         void far getfillpattern(char far *pattern);
  693.  
  694. Purpose        getfillpattern  copies  the  currently  used   fill 
  695.                pattern into memory pointed to by pattern.
  696.  
  697.                pattern  points to a sequence of 8 bytes with  each 
  698.                byte  defining  the  pattern  for  a  line  in  the 
  699.                pattern.  A 1 bit indicates which pixels are to  be 
  700.                drawn.
  701.  
  702.                byte #    char contents       pattern to draw
  703.                ---------------------------------------------
  704.                 0             0xF0           1 1 1 1 0 0 0 0
  705.                 1             0x8E           1 0 0 0 1 1 1 0
  706.                 2             0xF4           1 1 1 1 0 1 0 0
  707.                 3             0x14           0 0 0 1 0 1 0 0
  708.                 4             0xF4           1 1 1 1 0 1 0 0
  709.                 5             0x04           0 0 0 0 0 1 0 0
  710.                 6             0x04           0 0 0 0 0 1 0 0
  711.                 7             0x00           0 0 0 0 0 0 0 0
  712.  
  713. __________________________________________________________________
  714.  
  715. getfillsettings
  716.                Gets information about the current fill pattern and 
  717.                colour
  718. __________________________________________________________________
  719. Syntax         void far getfillsettings(struct fillsettingstype
  720.                                         far *fillinfo);
  721.  
  722. Purpose        getfillsettings   fills  in  the   fillsettingstype 
  723.                structure   pointed   to  by  fillinfo   with   the 
  724.                information  about  the  current  fill  style   and 
  725.                colour.  fillsettingstype is defined in  graphics.h 
  726.                and has the following structure:
  727.  
  728.                     struct fillsettingstype {
  729.                          int pattern;
  730.                          int color;
  731.                     };
  732.  
  733.                There are 39 fill patterns available for use.  Some 
  734.                are predefined in the enumerated type fill_patterns 
  735.                and correspond as closely as possible with Turbo C.
  736.  
  737.                fill_patterns   Numeric
  738.                constant        value 
  739.                --------------------------------------------------
  740.                EMPTY_FILL        0   fills with background colour
  741.                SOLID_FILL        1   fills with fill colour
  742.                LINE_FILL         2   --- fill
  743.                LTSLASH_FILL      3   /// fill
  744.                SLASH_FILL        4   /// fill with thick lines
  745.                BKSLASH_FILL      5   \\\ fill with thick lines
  746.                LTBKSLASH_FILL    6   \\\ fill
  747.                HATCH_FILL        7   light hatch fill
  748.                XHATCH_FILL       8   heavy cross hatch fill
  749.                INTERLEAVE_FILL   9   interleaving line fill
  750.                WIDE_DOT_FILL    10   widely spaced dot fill
  751.                CLOSE_DOT_FILL   11   closely spaced dot fill
  752.                USER_FILL        12   use user defined fill
  753.  
  754. __________________________________________________________________
  755.  
  756. getgraphmode   Returns the current graphics mode
  757. __________________________________________________________________
  758. Syntax         int far getgraphmode(void);
  759.  
  760. Purpose        getgraphmode  returns  the current  graphics  mode. 
  761.                Names  for the values are defined in graphics.h  in 
  762.                the enumeration type graph_modes.
  763.  
  764. __________________________________________________________________
  765.  
  766. getimage       Saves  a  bit image of the  specified  region  into 
  767.                memory
  768. __________________________________________________________________
  769. Syntax         void far getimage(int left, int top,
  770.                                  int right, int bottom,
  771.                                  void far *bitmap);
  772.  
  773. Purpose        getimage saves a rectangular portion of the screen, 
  774.                defined by (left,top) to (right,bottom),  to memory 
  775.                pointed to by bitmap.
  776.  
  777.                This function is particularly useful in combination 
  778.                which putimage to animate something on the screen.
  779.  
  780. __________________________________________________________________
  781.  
  782. getlinesettings
  783.                Gets the current line style, pattern and thickness
  784. __________________________________________________________________
  785. Syntax         void far getlinesettings(struct linesettingstype
  786.                                         far *lineinfo);
  787.  
  788. Purpose        getlinesettings   fills  in  the   linesettingstype 
  789.                structure   pointed   to  by  lineinfo   with   the 
  790.                information  about  the current  line  style,  user 
  791.                defined pattern and thickness.  linesettingstype is 
  792.                defined   in  graphics.h  and  has  the   following 
  793.                structure:
  794.  
  795.                     struct linesettingstype {
  796.                          int linestyle;
  797.                          unsigned upattern;
  798.                          int thickness;
  799.                     };
  800.  
  801.                The  line  styles  names  are  predefined  in   the 
  802.                enumerated  type  line_styles  and  correspond   as 
  803.                closely as possible with Turbo C.
  804.  
  805.                line_styles     Numeric
  806.                constant        value 
  807.                -----------------------
  808.                SOLID_LINE        0
  809.                DOTTED_LINE       1
  810.                CENTER_LINE       2
  811.                DASHED_LINE       3
  812.                USERBIT_LINE      4
  813.  
  814. __________________________________________________________________
  815.  
  816. getmaxcolor    Returns maximum colour value that can be passed  to 
  817.                setcolor
  818. __________________________________________________________________
  819. Syntax         int far getmaxcolor(void);
  820.  
  821. Purpose        getmaxcolor  simply returns the highest  valid  pen 
  822.                number that can be passed to setcolor.
  823.  
  824.                The  returned  values are:  1 for  SM124HI,  3  for 
  825.                SC1224MED and 15 for SC1224LO,  255 for  TTC1434LO, 
  826.                15 for TTC1434MED and 2 for TTM194HI.
  827.  
  828. __________________________________________________________________
  829.  
  830. getmaxmode     Returns  the  maximum mode number for  the  current 
  831.                driver
  832. __________________________________________________________________
  833. Syntax         int far getmaxmode(void);
  834.  
  835. Purpose        getmaxmode returns the maximum mode number for  the 
  836.                current driver.
  837.  
  838. __________________________________________________________________
  839.  
  840. getmaxx        Returns maximum x screen coordinate
  841. __________________________________________________________________
  842. Syntax         int far getmaxx(void);
  843.  
  844. Purpose        getmaxx  returns the maximum x coordinate  for  the 
  845.                current graphics mode.  For example, the resolution 
  846.                for SM124HI is 640x400 so getmaxx returns 639.
  847.  
  848. __________________________________________________________________
  849.  
  850. getmaxy        Returns maximum y screen coordinate
  851. __________________________________________________________________
  852. Syntax         int far getmaxy(void);
  853.  
  854. Purpose        getmaxy  returns the maximum y coordinate  for  the 
  855.                current graphics mode.  For example, the resolution 
  856.                for SM124HI is 640x400 so getmaxy returns 399.
  857.  
  858. __________________________________________________________________
  859.  
  860. getmodename    Returns  a pointer to a string containing the  name 
  861.                of a specified graphics mode
  862. __________________________________________________________________
  863. Syntax         char *far getmodename(int mode_number);
  864.  
  865. Purpose        getmodename  returns  a pointer to  a  string  that 
  866.                contains the name, specified by mode_number, of the 
  867.                graphics mode being used.
  868.  
  869. __________________________________________________________________
  870.  
  871. getmoderange   Gets the range of modes for a given graphics driver
  872. __________________________________________________________________
  873. Syntax         void far getmoderange(int graphdriver,
  874.                                      int far *lomode,
  875.                                      int far *himode);
  876.  
  877. Purpose        getmoderange  returns the range of valid modes  for 
  878.                the  specified driver.  If graphdriver  is  invalid 
  879.                then  *lomode  and  *himode  are  set  to  -1.   If 
  880.                graphdriver is -1 then the current mode is returned 
  881.                in *lomode and *himode.
  882.  
  883. __________________________________________________________________
  884.  
  885. getpalette     Gets information about the current palette
  886. __________________________________________________________________
  887. Syntax         void far getpalette(struct palettetype
  888.                                    far *palette);
  889.  
  890. Purpose        getpalette  fills  in  the  palettetype   structure 
  891.                pointed  to by palette with the  information  about 
  892.                the current colour palette being used.  palettetype 
  893.                is  defined  in graphics.h and  has  the  following 
  894.                structure:
  895.  
  896.                     #define MAXCOLORS 15;
  897.  
  898.                     struct palettetype {
  899.                          unsigned size;
  900.                          char colors[MAXCOLORS+1];
  901.                     };
  902.  
  903.  
  904.                size  contains the number of entries being used  in 
  905.                colors.  Each entry in colors stores the color  for 
  906.                that drawing pen.
  907.  
  908. __________________________________________________________________
  909.  
  910. getpalettesize Returns size of palette colour lookup table
  911. __________________________________________________________________
  912. Syntax         int far getpalettesize(void);
  913.  
  914. Purpose        getpalettesize   returns  the  number  of   palette 
  915.                entries for the current graphics mode.
  916.  
  917. __________________________________________________________________
  918.  
  919. getpixel       Gets the colour of a specified pixel
  920. __________________________________________________________________
  921. Syntax         unsigned far getpixel(int x, int y);
  922.  
  923. Purpose        getpixel  returns the pen number that was  used  to 
  924.                draw   the  pixel  on  the  screen  at  the   (x,y) 
  925.                coordinate.
  926.  
  927. __________________________________________________________________
  928.  
  929. gettextsettings
  930.                Gets  information about the current  graphics  text 
  931.                font 
  932. __________________________________________________________________
  933. Syntax         void far gettextsettings(struct textsettingstype
  934.                                         far *texttypeinfo);
  935.  
  936. Purpose        gettextinfo fills in the textsettingstype structure 
  937.                pointed  to  by texttypeinfo with  the  information 
  938.                about  the  current  text  font,  direction,  size, 
  939.                effects  and  justification.   textsettingstype  is 
  940.                defined   in  graphics.h  and  has  the   following 
  941.                structure:
  942.  
  943.                     struct textsettingstype {
  944.                          int font;
  945.                          int direction;
  946.                          int charsize;
  947.                          int horiz;
  948.                          int vert;
  949.                     };
  950.  
  951. __________________________________________________________________
  952.  
  953. getviewportsettings
  954.                Gets information about the current viewport
  955. __________________________________________________________________
  956. Syntax         void far getviewsettings(struct viewporttype
  957.                                         far *viewport);
  958.  
  959. Purpose        getviewportsettings   fills  in  the   viewporttype 
  960.                structure   pointed   to  by  viewport   with   the 
  961.                information    about    the    current    viewport. 
  962.                viewporttype  is defined in graphics.h and has  the 
  963.                following structure:
  964.  
  965.                     struct viewporttype {
  966.                          int left, top, right, bottom;
  967.                          int clip;
  968.                     };
  969.  
  970. __________________________________________________________________
  971.  
  972. getx           Returns   the   current   graphics   position's   x 
  973.                coordinate
  974. __________________________________________________________________
  975. Syntax         int far getx(void);
  976.  
  977. Purpose        getx   returns  the  current  position's   (CP)   x 
  978.                coordinate. This value is viewport relative.
  979.  
  980. __________________________________________________________________
  981.  
  982. gety           Returns   the   current   graphics   position's   y 
  983.                coordinate
  984. __________________________________________________________________
  985. Syntax         int far gety(void);
  986.  
  987. Purpose        gety   returns  the  current  position's   (CP)   y 
  988.                coordinate. This value is viewport relative.
  989.  
  990. __________________________________________________________________
  991.  
  992. graphdefaults  Resets all graphics settings to their defaults
  993. __________________________________________________________________
  994. Syntax         void far graphdefaults(void);
  995.  
  996. Purpose        graphdefault  resets  all  graphics  settings   the 
  997.                appropriate defaults:
  998.  
  999.                sets default palette colours and drawing colour.
  1000.  
  1001.                sets default fill style and colour.
  1002.  
  1003.                sets default line style.
  1004.  
  1005.                sets default text style and justification.
  1006.  
  1007.                sets viewport to entire screen with clipping on.
  1008.  
  1009. __________________________________________________________________
  1010.  
  1011. grapherrormsg  Returns a pointer to an error message string
  1012. __________________________________________________________________
  1013. Syntax         char * far grapherrormsg(int errorcode);
  1014.  
  1015. Purpose        grapherrormsg  returns  a  pointer  to  the   error 
  1016.                message   text  associated  with  errorcode   value 
  1017.                returned by  graphresult.
  1018.  
  1019. __________________________________________________________________
  1020.  
  1021. _graphfreemem  User hook into graphics memory allocation
  1022. __________________________________________________________________
  1023. Syntax         void far _graphfreemem(void far *ptr,
  1024.                                       unsigned size);
  1025.  
  1026. Purpose        _graphfreemem  is a memory management routine  used 
  1027.                by  Turbo C to free allocated graphics  memory  and 
  1028.                has  not be implemented on the ST/STe/TT.  After  a 
  1029.                call  to  _graphfreemem,  graphresult  will  return 
  1030.                grNotImplemented.
  1031.  
  1032. __________________________________________________________________
  1033.  
  1034. _graphgetmem   User hook into graphics memory allocation
  1035. __________________________________________________________________
  1036. Syntax         void far _graphgetmem(unsigned size);
  1037.  
  1038. Purpose        _graphgetmem is a memory management routine used by 
  1039.                Turbo C to allocate graphics memory and has not  be 
  1040.                implemented  on  the ST/STe/TT.  After  a  call  to 
  1041.                _graphgetmem,      graphresult     will      return 
  1042.                grNotImplemented.
  1043.  
  1044. __________________________________________________________________
  1045.  
  1046. graphresult    Returns  an  error code for the  last  unsuccessful 
  1047.                graphics operation
  1048. __________________________________________________________________
  1049. Syntax         int far graphresult(void);
  1050.  
  1051. Purpose        graphresult   returns  the  error  code  that   was 
  1052.                reported for the last graphics operation. The error 
  1053.                status is reset to grOk.
  1054.  
  1055.                All graphics functions will set the error status to 
  1056.                grOk unless something has gone wrong.
  1057.  
  1058.            Error     graphics_errors
  1059.            code      constant           message string
  1060.            -------------------------------------------------------
  1061.              0       grOk               No error
  1062.             -1       grNoInit           GraphGraphics not  initia-
  1063.                                         lized (use 'initgraph')
  1064.             -2       grNotDetected      Graphics hardware not  de-
  1065.                                         tected
  1066.             -3       grFileNotFound     Device driver file not fo-
  1067.                                         und
  1068.             -4       grInvalidDriver    Invalid device driver file
  1069.             -5       grNoLoadMem        Not enough memory to  load 
  1070.                                         driver
  1071.             -6       grNoScanMem        Out of memory in scan fill
  1072.             -7       grNoFloodMem       Out  of  memory  in  flood 
  1073.                                         fill
  1074.             -8       grFontNotFound     Font file not found
  1075.             -9       grNoFontMem        Not enough memory to load
  1076.                                         font
  1077.            -10       grInvalidMode      Invalid graphics mode for
  1078.                                         selected driver
  1079.            -11       grError            Graphics error
  1080.            -12       grIOerror          Graphics I/O error
  1081.            -13       grInvalidFont      Invalid font file
  1082.            -14       grInvalidFontNum   Invalid font number
  1083.            -15       grInvalidDeviceNum Invalid device number
  1084.            -16       grInvalidFontSize  Invalid font size
  1085.            -17       grNotImplemented   Not implemented on Atari
  1086.                                         ST/STe/TT
  1087.            -18       grInvalidVersion   Invalid version number
  1088.  
  1089. __________________________________________________________________
  1090.  
  1091. imagesize      Returns the number of bytes required to store a bit 
  1092.                image
  1093. __________________________________________________________________
  1094. Syntax         unsigned far imagesize(int left, int top,
  1095.                                       int right, int bottom);
  1096.  
  1097. Purpose        imagesize determines the number of bytes of  memory 
  1098.                required to store a bit image.
  1099.  
  1100. __________________________________________________________________
  1101.  
  1102. initgraph      Initializes the graphics system
  1103. __________________________________________________________________
  1104. Syntax         void far initgraph(int  far *graphdriver,
  1105.                                   int  far *graphmode,
  1106.                                   char far *pathtodriver);
  1107.  
  1108. Purpose        initgraph  initializations the graphics system  and 
  1109.                must  be called before any graphics  functions  are 
  1110.                attempted.  If a graphic function is called  before 
  1111.                initgraph  an error message will be  displayed  and 
  1112.                the program will terminate.
  1113.  
  1114.                *graphdriver  is  an  integer  that  indicates  the 
  1115.                driver to be used. You can use constants defined by 
  1116.                the  graphics_driver  enumeration  type  as   shown 
  1117.                below.                
  1118.  
  1119.                graphics_driver
  1120.                constant                 Numeric value
  1121.                --------------------------------------
  1122.                DETECT                    0 (autodetection)
  1123.                ...                      .. (CGA, EGA, VGA, etc)
  1124.                SC1224                   11
  1125.                SM124                    12
  1126.                TTC1434                  13
  1127.                TTM194                   14
  1128.                UNKNOWN_DRIVER           15
  1129.  
  1130.                *graphmode is an integer that indicates the  screen 
  1131.                mode to be used.  You can use constants defined  by 
  1132.                the graphics_mode enumeration type as shown below.
  1133.  
  1134.                graphics_mode
  1135.                constant                 Numeric value
  1136.                --------------------------------------
  1137.                CGAC0                      0
  1138.                ...                      .. (CGA, EGA, VGA, etc)
  1139.                SC1224LO                   0
  1140.                SC1224MED                  1
  1141.                SM124HI                    0
  1142.                TTC1434LO                  0
  1143.                TTC1434MED                 1
  1144.                TTM194HI                   0
  1145.                UNKNOWN_MODE               0
  1146.  
  1147.                Note:  Refer  to graphics.h for a complete list  of 
  1148.                values. Only ST/STe/TT specific values are used.
  1149.  
  1150.                After   initgraph  is   called,   graphdriver   and 
  1151.                graphmode will be updated to the appropriate values 
  1152.                to   indicated  the  actual  graphics   mode   set. 
  1153.                pathtodriver  has no effect on the ST/STe/TT  since 
  1154.                graphic drivers cannot be loaded.
  1155.  
  1156.                If no graphics hardware is  detected,  *graphdriver 
  1157.                is  set to grNotDetected and graphresult will  also 
  1158.                return grNotDetected.
  1159.  
  1160. __________________________________________________________________
  1161.  
  1162. installuserdriver
  1163.                Installs  a vendor-added device driver to  the  BGI 
  1164.                device driver table
  1165. __________________________________________________________________
  1166. Syntax         int far installuserdriver(char far *name,
  1167.                                         int huge (*detect)(void));
  1168.  
  1169. Purpose        installuserdriver  is  used  to  load   alternative 
  1170.                graphics drivers and has not be implemented on  the 
  1171.                ST/STe/TT.    After   a   call   to   _graphgetmem, 
  1172.                graphresult will return grNotImplemented.
  1173.  
  1174. __________________________________________________________________
  1175.  
  1176. installuserfont
  1177.                Loads  a font file that is not built into  the  BGI 
  1178.                system
  1179. __________________________________________________________________
  1180. Syntax         int far installuserfont(char far *name);
  1181.  
  1182. Purpose        installuserfont  is used to load a  "stroked"  font 
  1183.                and  has  not been implemented  on  the  ST/STe/TT. 
  1184.                After a call to installuserfont,  graphresult  will 
  1185.                return grNotImplemented.
  1186.  
  1187. __________________________________________________________________
  1188.  
  1189. line           Draws a line between two specified points
  1190. __________________________________________________________________
  1191. Syntax         void far line(int x1, int y1, int x2, int y2);
  1192.  
  1193. Purpose        line  draws a line using the current  colour,  line 
  1194.                style,  thickness  between the (x1,y1) and  (x2,y2) 
  1195.                points.
  1196.  
  1197. __________________________________________________________________
  1198.  
  1199. linerel        Draws  a line a relative distance from the  current 
  1200.                position (CP)
  1201. __________________________________________________________________
  1202. Syntax         void far linerel(int dx, int dy);
  1203.  
  1204. Purpose        linerel draws a line from the current position (CP) 
  1205.                to  the point (dx,dy) which is a relative  distance 
  1206.                from  CP.  CP  is adjusted by  (dx,dy).The  current 
  1207.                colour, line style and thickness are used.
  1208.  
  1209. __________________________________________________________________
  1210.  
  1211. lineto         Draws  a  line from the current  position  (CP)  to 
  1212.                (x,y)
  1213. __________________________________________________________________
  1214. Syntax         void far lineto(int x, int y);
  1215.  
  1216. Purpose        lineto draws a line from the current position  (CP) 
  1217.                to  the  point (x,y).  CP is moved  to  (x,y).  The 
  1218.                current colour, line style and thickness are used.
  1219.  
  1220. __________________________________________________________________
  1221.  
  1222. moverel        Moves the current position (CP) a relative distance
  1223. __________________________________________________________________
  1224. Syntax         void far moverel(int dx, int dy);
  1225.  
  1226. Purpose        moverel  moves the current position (CP) by  dx  in 
  1227.                the  horizontal  direction and dy in  the  vertical 
  1228.                direction.
  1229.  
  1230. __________________________________________________________________
  1231.  
  1232. moveto         Moves the current position (CP) to (x,y)
  1233. __________________________________________________________________
  1234. Syntax         void far moveto(int x, int y);
  1235.  
  1236. Purpose        moveto moves the current position (CP) to the point 
  1237.                specified by (x,y).
  1238.  
  1239. __________________________________________________________________
  1240.  
  1241. outtext        Displays a string in the viewport
  1242. __________________________________________________________________
  1243. Syntax         void far outtext(char far *textstring);
  1244.  
  1245. Purpose        outtext  displays  a text string  in  the  viewport 
  1246.                using the current text style,  size,  justification 
  1247.                and direction.
  1248.  
  1249.                outtext displays textstring at the current position 
  1250.                (CP).  If  the horizontal justification is  set  to 
  1251.                LEFT_TEXT   and  the  vertical   justification   to 
  1252.                HORIZ_TEXT,  then CP's x coordinate is adjusted  by 
  1253.                textwidth(textstring). Otherwise CP is unchanged.
  1254.  
  1255. __________________________________________________________________
  1256.  
  1257. outtextxy      Displays a string at a specified location
  1258. __________________________________________________________________
  1259. Syntax         void far outtextxy(int x, int y,
  1260.                                   char far *textstring);
  1261.  
  1262. Purpose        outtextxy  displays a text string in  the  viewport 
  1263.                using the current text style,  size,  justification 
  1264.                and direction at (x,y).
  1265.  
  1266.                The current position (CP) is not changed.
  1267.  
  1268. __________________________________________________________________
  1269.  
  1270. pieslice       Draws and fills in pie slice
  1271. __________________________________________________________________
  1272. Syntax         void far pieslice(int x, int y, int stangle,
  1273.                                  int endangle, int radius);
  1274.  
  1275. Purpose        pieslice  draws a pieslice at (x,y) with  a  radius 
  1276.                given  by radius.  The pieslice is drawn  from  the 
  1277.                stangle to the endangle.  stangle and endangle  are 
  1278.                given in degrees and measured counterclockwise with 
  1279.                0 degrees being at 3 o'clock.
  1280.  
  1281.                The pieslice is filled with the current fill  style 
  1282.                and colour,  then outlined with the current colour, 
  1283.                line style and thickness.
  1284.  
  1285. __________________________________________________________________
  1286.  
  1287. putimage       Outputs a bit image onto the screen
  1288. __________________________________________________________________
  1289. Syntax         void far putimage(int left, int top,
  1290.                                  void far *bitmap, int op);
  1291.  
  1292. Purpose        putimage  draws the bit image saved by getimage  on 
  1293.                the  screen  with  the  upper  right  corner  being 
  1294.                positioned  at  (left,top).  bitmap points  to  the 
  1295.                location in memory where the image is stored.
  1296.  
  1297.                op  indicates who the image is to be drawn  on  the 
  1298.                screen. The enumeration type putimage_ops, as found 
  1299.                in graphics.h, gives name for the op values.
  1300.  
  1301.                putimage_ops
  1302.                constant       value     description
  1303.                -----------------------------------------
  1304.                COPY_PUT         0       copy
  1305.                XOR_PUT          1       exclusive or
  1306.                OR_PUT           2       inclusive or
  1307.                AND_PUT          3       and
  1308.                NOT_PUT          4       copy the inverse
  1309.  
  1310. __________________________________________________________________
  1311.  
  1312. putpixel       Plots a pixel at a specific point
  1313. __________________________________________________________________
  1314. Syntax         void far putpixel(int x, int y, int color);
  1315.  
  1316. Purpose        putpixel  draws a single point at (x,y)  using  the 
  1317.                given color.
  1318.  
  1319. __________________________________________________________________
  1320.  
  1321. rectangle      Draws a rectangle
  1322. __________________________________________________________________
  1323. Syntax         void far rectangle(int left, int top,
  1324.                                   int right, int bottom);
  1325.  
  1326. Purpose        rectangle  draws  a rectangle from the  upper  left 
  1327.                corner   (left,top)  to  the  lower  right   corner 
  1328.                (right,bottom) using the current colour, line style 
  1329.                and thickness.
  1330.  
  1331. __________________________________________________________________
  1332.  
  1333. registerbgidriver and registerfarbgidriver
  1334.                Registers  a  user-loaded  or  linked-in   graphics 
  1335.                driver code with the graphics system
  1336. __________________________________________________________________
  1337. Syntax         int registerbgidriver(void (*driver)(void));
  1338.                int registerfarbgidriver(void (*driver)(void));
  1339.  
  1340. Purpose        registerbgidriver and registerfarbgidriver have not 
  1341.                been   implemented   in  this   graphics   library. 
  1342.                graphresult will report a grNotImplemented error.
  1343.  
  1344. __________________________________________________________________
  1345.  
  1346. registerbgifont and registerfarbgifont
  1347.                Registers a user-loaded or linked-in graphics  font 
  1348.                code with the graphics system
  1349. __________________________________________________________________
  1350. Syntax         int registerbgifont(void (*font)(void));
  1351.                int registerfarbgifont(void (*font)(void));
  1352.  
  1353. Purpose        registerbgifont  and  registerfarbgifont  have  not 
  1354.                been   implemented   in  this   graphics   library. 
  1355.                graphresult will report a grNotImplemented error.
  1356.  
  1357. __________________________________________________________________
  1358.  
  1359. restorecrtmode Restores  the  screen  mode  to  its  pre-initgraph 
  1360.                setting
  1361. __________________________________________________________________
  1362. Syntax         void far restorecrtmode(void);
  1363.  
  1364. Purpose        restorecrtmode returns the screen to text mode. The 
  1365.                screen  is  cleared and the cursor returns  to  the 
  1366.                home position (0,0).  This function can be used  in 
  1367.                conjuction with setgraphmode to switch between text 
  1368.                and graphic modes.
  1369.  
  1370. __________________________________________________________________
  1371.  
  1372. sector         Draw and fills an elliptical pie slice
  1373. __________________________________________________________________
  1374. Syntax         void far sector(int x, int y,
  1375.                                int stangle, int endangle,
  1376.                                int xradius, int yradius );
  1377.  
  1378. Purpose        sector  draws  an elliptical  pieslice  located  at 
  1379.                (x,y)  with  a horizontal radius of xradius  and  a 
  1380.                vertical  radius of yradius.  The sector  is  drawn 
  1381.                from  stangle and ends at endangle.  The sector  is 
  1382.                filled with the current fill style and colour, then 
  1383.                outlined  with the current line colour,  style  and 
  1384.                thickness.
  1385.  
  1386.                stangle  and  endangle are given  in  degrees.  The 
  1387.                angle  is measured counterclockwise with 0  degrees 
  1388.                being at 3 o'clock.
  1389.  
  1390. __________________________________________________________________
  1391.  
  1392. setactivepage  Sets active page for graphics output
  1393. __________________________________________________________________
  1394. Syntax         void far setactivepage(int page);
  1395.  
  1396. Purpose        setactivepage  has  no  effect  on  the   ST/STe/TT 
  1397.                implementation since only ONE page is used. If page 
  1398.                is non-zero graphresult returns grError.
  1399.  
  1400. __________________________________________________________________
  1401.  
  1402. setallpalette  Changes all palette colours as specified
  1403. __________________________________________________________________
  1404. Syntax         void far setallpalette(struct palettetype
  1405.                                       far *palette);
  1406.  
  1407. Purpose        setallpalette sets the colour palette to the colour 
  1408.                values  contained  in  the  palettetype   structure 
  1409.                pointed to by palette.
  1410.  
  1411.                palettetype  as the following structure  define  in 
  1412.                graphics.h.
  1413.  
  1414.                #define MAXCOLORS 15
  1415.  
  1416.                struct palettetype {
  1417.                     unsigned char size;
  1418.                     signed char colors[MAXCOLORS+1];
  1419.                };
  1420.  
  1421.                size indicates how many entries in the colors array 
  1422.                exist. colors holds the color numbers.
  1423.  
  1424. __________________________________________________________________
  1425.  
  1426. setaspectratio Changes the default aspect ratio correction factor
  1427. __________________________________________________________________
  1428. Syntax         void far setaspectratio(int xasp, int yasp);
  1429.  
  1430. Purpose        setaspectratio  has not been implemented since  the 
  1431.                VDI routines correctly handle the aspect ratio. The 
  1432.                purpose of setaspectratio for the PC is to  correct 
  1433.                the aspect ratio for add on graphics drivers.
  1434.  
  1435.                graphresult   will   return   grNotImplemented   if 
  1436.                setaspectratio is called.
  1437.  
  1438. __________________________________________________________________
  1439.  
  1440. setbkcolor     Sets  the  current  background  colour  using   the 
  1441.                palette
  1442. __________________________________________________________________
  1443. Syntax         void far setbkcolor(int color);
  1444.  
  1445. Purpose        setbkcolor   sets the background color (pen  0)  to 
  1446.                color.
  1447.  
  1448.                Number    Colour
  1449.                ------------------------                  
  1450.                   0      BLACK
  1451.                   1      BLUE
  1452.                   2      GREEN
  1453.                   3      CYAN
  1454.                   4      RED
  1455.                   5      MAGENTA
  1456.                   6      BROWN
  1457.                   7      LIGHTGRAY
  1458.                   8      DARKGRAY
  1459.                   9      LIGHTBLUE
  1460.                  10      LIGHTGREEN
  1461.                  11      LIGHTCYAN
  1462.                  12      LIGHTRED
  1463.                  13      LIGHTMAGENTA
  1464.                  14      YELLOW
  1465.                  15      WHITE
  1466.  
  1467. __________________________________________________________________
  1468.  
  1469. setcolor       Sets the current drawing colour using the palette
  1470. __________________________________________________________________
  1471. Syntax         void far setcolor(int color);
  1472.  
  1473. Purpose        setcolor sets the current drawing colour to  color. 
  1474.                color  can  range  from  0  to   getmaxcolor.   See 
  1475.                setbkcolor.
  1476.  
  1477.                setcolor  also effects the colour of  graphic  text 
  1478.                drawn on the screen.
  1479.  
  1480. __________________________________________________________________
  1481.  
  1482. setfillpattern Selects a user-defined fill pattern
  1483. __________________________________________________________________
  1484. Syntax         void far setfillpattern(char far *upattern,
  1485.                                        int color);
  1486.  
  1487. Purpose        setfillpattern allows the programmer to define user 
  1488.                defined fill patterns that will be used by  graphic 
  1489.                functions that fill shapes.  The pattern is defined 
  1490.                with  8 bytes,  pointed to by upattern,  each  byte 
  1491.                represents   the   bit   pattern   per   row.   See 
  1492.                getfillpattern  for  more  information.   The  fill 
  1493.                colour is set to color.
  1494.  
  1495. __________________________________________________________________
  1496.  
  1497. setfillstyle   Sets the fill pattern and colour
  1498. __________________________________________________________________
  1499. Syntax         void far setfillstyle(int pattern, int color);
  1500.  
  1501. Purpose        setfillstyle sets the fill pattern to pattern,  one 
  1502.                of  the predefined fill patterns and sets the  fill 
  1503.                colour  to  color.  See  getfillsettings  for  more 
  1504.                information.
  1505.  
  1506.                Do   not   use   a  pattern   of   USER_FILL   with 
  1507.                setfillstyle,  use setfillpattern to define and use 
  1508.                a user defined fill pattern
  1509.  
  1510. __________________________________________________________________
  1511.  
  1512. setgraphbufsize
  1513.                Changes the size of the internal graphics buffer
  1514. __________________________________________________________________
  1515. Syntax         unsigned far setgraphbufsize(unsigned bufsize);
  1516.  
  1517. Purpose        setgraphbufsize  has not been implemented  in  this 
  1518.                graphics   library.   graphresult  will  report   a 
  1519.                grNotImplemented error.
  1520.  
  1521. __________________________________________________________________
  1522.  
  1523. setgraphmode   Sets the system to graphics mode, clears the screen
  1524. __________________________________________________________________
  1525. Syntax         void far setgraphmode(int mode);
  1526.  
  1527. Purpose        setgraphmode  returns the screen to  graphics  mode 
  1528.                and  resets all graphics settings to their  default 
  1529.                values.  This  function can be used  in  conjuction 
  1530.                with  restorecrtmode  to switch  between  text  and 
  1531.                graphic modes.
  1532.  
  1533. __________________________________________________________________
  1534.  
  1535. setlinestyle   Sets the current line width and style
  1536. __________________________________________________________________
  1537. Syntax         void far setlinestyle(int linestyle,
  1538.                                      unsigned upattern,
  1539.                                      int thickness);
  1540.  
  1541. Purpose        setlinestyle   sets  the  current  line  style   to 
  1542.                linestyle   and   thickness   to   thickness.   See 
  1543.                getlinesettings   for   more   information    about 
  1544.                linestyle values.
  1545.  
  1546.                A user-defined line style can also be specified  by 
  1547.                requesting  a  USERBIT_LINE  in  as  linestyle  and 
  1548.                specifying the bit pattern in upattern.  If a  user 
  1549.                defined pattern is not wanted,  upattern must still 
  1550.                be provided, but is simply ignored.
  1551.  
  1552.                Note: the linestyle setting is only effect when the 
  1553.                thickness is 1.
  1554.  
  1555. __________________________________________________________________
  1556.  
  1557. setpalette     Changes one palette colour
  1558. __________________________________________________________________
  1559. Syntax         void far setpalette(int colornum, int color);
  1560.  
  1561. Purpose        setpalette  is not implemented since  setrgbpalette 
  1562.                will  handle  all changes to  the  colour  palette. 
  1563.                graphresult will return grNotImplemented.
  1564.  
  1565. __________________________________________________________________
  1566.  
  1567. setrgbpalette  Allows user to define colour for the IBM8514
  1568. __________________________________________________________________
  1569. Syntax         void far setrgbpalette(int colornum,
  1570.                                       int red, int green,
  1571.                                       int blue);
  1572.  
  1573. Purpose        setrgbpalette sets the colornum entry in the colour 
  1574.                palette  to the red,  green,  blue values.  On  the 
  1575.                ST/STe these values can range from 0 to 7 and 0  to 
  1576.                15 on the TT.
  1577.  
  1578.                The TT and third party graphic cards are capable of 
  1579.                more than 16 colours on the  screen.  setrgbpalette 
  1580.                can  change  any  of them  and  the  first  sixteen 
  1581.                entries in the palette are set to the default Turbo 
  1582.                C colours shown in setbkcolor.
  1583.  
  1584. __________________________________________________________________
  1585.  
  1586. settextjustify Sets text justification for graphics functions
  1587. __________________________________________________________________
  1588. Syntax         void far settextjustify(int horiz, int vert);
  1589.  
  1590. Purpose        settextjustify  determines  how text  is  displayed 
  1591.                with reference to the current position (CP).
  1592.  
  1593.                text_just
  1594.                constant       value
  1595.                ---------------------               LEFT_TEXT        
  1596. 0   
  1597.                CENTER_TEXT      1   
  1598.                RIGHT_TEXT       2 
  1599.  
  1600.                BOTTOM_TEXT      0
  1601.                CENTER_TEXT      1
  1602.                TOP_TEXT         2
  1603.  
  1604. __________________________________________________________________
  1605.  
  1606. settextstyle   Sets  the current text characteristics for  graphic 
  1607.                output
  1608. __________________________________________________________________
  1609. Syntax         void far settextstyle(int font, int direction,
  1610.                                      int charsize);
  1611.  
  1612. Purpose        settextstyle  sets the text  font,  direction,  and 
  1613.                charsize   that  will  be  used  by   outtext   and 
  1614.                outtextxy.
  1615.  
  1616.                font can have several values:
  1617.  
  1618.                value     result
  1619.                ---------------------               0x00      sytem 
  1620. font
  1621.                0x01      bold font
  1622.                0x02      grayed font
  1623.                0x04      italicized font
  1624.                0x08      underlined font
  1625.                0x10      outlined font
  1626.  
  1627.                These font values can be ANDed together to  combine 
  1628.                the fonts. For example, if font is 0x14 the font is 
  1629.                shown italicized and outlied.
  1630.  
  1631.                charsize differs from Turbo C is that it represents 
  1632.                the font point size and not a magnification factor. 
  1633.                The system font can be displayed in six sizes:
  1634.  
  1635.                value     point size
  1636.                --------------------                 0            8
  1637.                  1            9
  1638.                  2           10
  1639.                  3           16
  1640.                  4           18
  1641.                  5 and up    20
  1642.  
  1643. __________________________________________________________________
  1644.  
  1645. setusercharsize
  1646.                Allows  the  user to vary the character  width  and 
  1647.                height for fonts
  1648. __________________________________________________________________
  1649. Syntax         void far setusercharsize(int multx, int divx,
  1650.                                         int multy, int divy);
  1651.  
  1652. Purpose        setusercharsize  has not been implemented  in  this 
  1653.                graphics   library.   graphresult  will  report   a 
  1654.                grNotImplemented error.
  1655.  
  1656. __________________________________________________________________
  1657.  
  1658. setviewport    Sets the current viewport for graphics output
  1659. __________________________________________________________________
  1660. Syntax         void far setviewport(int left, int top,
  1661.                                     int right, int bottom,
  1662.                                     int clip);
  1663.  
  1664. Purpose        setviewport  defines a portion of the  screen  that 
  1665.                will become the new viewport for graphics output.
  1666.  
  1667.                The  upper left corner (left,top) and  lower  right 
  1668.                corner (right,bottom) are given in absolute  screen 
  1669.                coordinates.  The current position (CP) is moved to 
  1670.                (0,0) and corresponds to the upper left corner.
  1671.  
  1672.                clip  determines whether or not graphic  operations 
  1673.                are clipped at the viewports perimeter.  If clip is 
  1674.                nonzero, all graphic operations will be clipped.
  1675.  
  1676.                Note: all graphic operations are viewport relative. 
  1677.                When  setviewport is used,  (0,0) will move to  the 
  1678.                upper left corner (left,top) of the new viewport.
  1679.  
  1680. __________________________________________________________________
  1681.  
  1682. setvisualpage  Sets the visual graphics page number
  1683. __________________________________________________________________
  1684. Syntax         void far setvisualpage(int page);
  1685.  
  1686. Purpose        setvisualpage  has  no  effect  on  the   ST/STe/TT 
  1687.                implementation since only ONE page is used. If page 
  1688.                is non-zero graphresult returns grError.
  1689.  
  1690. __________________________________________________________________
  1691.  
  1692. setwritemode   Sets the writing mode for line drawing
  1693. __________________________________________________________________
  1694. Syntax         void far setwritemode(int mode);
  1695.  
  1696. Purpose        setwritemode effects how the output of the  graphic 
  1697.                functions appears using binary operations.
  1698.  
  1699.                COPY_PUT simply copies the new output to the screen 
  1700.                and  XOR_PUT  performs an  exclusive  OR  operation 
  1701.                between the output and the existing screen image.
  1702.  
  1703.                A  second XOR_PUT of the same graphic  output  will 
  1704.                erase the result of the first one.
  1705.  
  1706. __________________________________________________________________
  1707.  
  1708. textheight     Returns the height of a string in pixels
  1709. __________________________________________________________________
  1710. Syntax         int far textheight(char far *textstring);
  1711.  
  1712. Purpose        textheight determines the height of textstring,  in 
  1713. pixels, of the current text font.
  1714.  
  1715.                This   function   is  very  useful   for   creating 
  1716.                resolution independent programs that use text.  Use 
  1717.                textheight   rather  than  doing  the   calculation 
  1718.                manually.
  1719. __________________________________________________________________
  1720.  
  1721. textwidth      Returns the width of a string in pixels
  1722. __________________________________________________________________
  1723. Syntax         int far textwidth(char far *textstring);
  1724.  
  1725. Purpose        textwidth  determines the width of  textstring,  in 
  1726.                pixels, of the current text font.
  1727.  
  1728.                This   function   is  very  useful   for   creating 
  1729.                resolution independent programs that use text.  Use 
  1730.                textwidth   rather  than  doing   the   calculation 
  1731.                manually.
  1732.  
  1733.